package tcpFirmware.controller;
import tcpFirmware.OKServer;
import tcpFirmware.ResponseBody;
import tcpFirmware.Routes;
import tcpFirmware.Type;
import tcpFirmware.model.DBHelper;

import java.io.IOException;
import java.net.Socket;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;


public class RegisterController {
    //这里是测试方法，你们只要像我这样，在tcpFirmware.controller包内新建一个Controller类，
    // 里面写上自己的处理方法，记得方法头上加@Routes注释路由,意思是标记发到这个路由的数据由下面的方法处理
    //然后就可以写自己的操作了，包括访问数据库和返回数据到客户端，test方法展示取文本数据所需要的形参
    //test2方法展示取字节数据所需要的形参,建议照着我这两个方法来写，一般你们都会需要用到header和form的数据

    @Routes(route = "register")
    public void register(Socket socket, HashMap<String,String> head,HashMap<String,String> form){
        String username=form.get("username");
        String password=form.get("password");

        Connection con = new DBHelper().getConnection();
        //B状态
        try {
            Statement statement =con.createStatement();
            ResultSet rs = statement.executeQuery("select* from Users where username='"+username+"'");
            boolean a = rs.next();
            if(a&&rs.getString("username").equals(username)) {
                ResponseBody responseBody = new ResponseBody(socket);
                responseBody.setHeader("status", "该用户已存在").setType(Type.text.type);
                responseBody.sendResponse();
            }
            else {
                int i=statement.executeUpdate("insert into Users values('"+username+"','"+password+"','0',"+0.0+")");
                String s = i==1?"注册成功":"注册失败";
                ResponseBody responseBody = new ResponseBody(socket);
                responseBody.setHeader("status", s).setType(Type.text.type);
                responseBody.sendResponse();
            }
        } catch (IOException|SQLException e) {
            e.printStackTrace();
        }
    }
}
